<?php
namespace app\admin\controller;
use think\validate;
use app\admin\model\Cate as CateModel;
class Cate extends Common
{
   public function lst()
   {
      //联表查询cate model两张表关联字段cate.model_id  model.ID
      $_cateRes=db('cate')->alias('a')->field('a.*,b.model_name')->join('cms_model b','a.model_id= b.id')->order('sort desc')->select();
     //dump($_cateRes);die;
      //把链表查询数据进行家谱树排序操作
      $cateres=model('cate')->cateTreemodel($_cateRes);
      //dump($cateres);die;
      $this->assign(array(
          'cateres'=>$cateres,
        ));
      //dump($cateres);die;
   		return view('list');
   }
   //ajax操作伸缩功能buge
   public function ajaxlst(){
      if(request()->isAjax()){
          $cateid=input('cateid');
          $trees=model('cate')->cateChildrenId($cateid);
          echo json_encode($trees);
      }else{
              $this->error('非法操作！');
           }
      
   }

   //ajax无刷新更新分类排序
   public function changeOrder(){
        if(request()->isAjax()){
              $cateid=input('cateid');
              $cate_sort=input('cate_order');
              $change=db('cate')->where('id',$cateid)->update(['sort'=>$cate_sort]);
              if($change){
                  $data=[
                      'status'=>0,
                      'msg'=>'分类排序更新成功',
                  ];
              }else{
                  $data=[
                      'status'=>1,
                      'msg'=>'分类排序更新失败',
                  ];
              }
              return $data;
        }else{
            $this->error('非法操作！');
        }
        
   }

   //ajax无刷新更新状态
   public function changestatus(){
      if(request()->isAjax()){
            $cateid=input('cateid');
            $status=db('cate')->field('status')->where('id',$cateid)->find();
            $statusres=$status['status'];

            if($statusres ==1){
              db('cate')->where('id',$cateid)->update(['status'=>0]);
              return 1;//有显示改为隐藏
            }else{
               db('cate')->where('id',$cateid)->update(['status'=>1]);
              return 2;//有隐藏改为显示
            }
      }else{
           $this->error('非法操作！');
      }

   }

   //批量删除功能
   public function delete(){
          if(request()->isPost()){
            $data=input('post.');
            $arr=$data['itm'];
            $res=array();
            // dump($arr);die;
           if($arr){
              //逐一获取批量删除下栏目的子栏目
              foreach ($arr as $k => $v) {
                 $res[]=model('cate')->cateChildrenId($v);
                 $res[]=(int)$v;
                  }
            $cateid=array();
            foreach ($res as $k1 => $v1) {
                  if(!is_array($v1)){
                      $cateid[]=$v1;
                  }else{
                    foreach ($v1 as $k2 => $v2) {
                      $cateid[]=$v2;
                      }
                  }
            }
            //去除重复数据
             $cateid=array_unique($cateid);
             db('cate')->delete($cateid); 
           }
          $this->success('栏目删除成功！',url('cate/lst'));
          }
   }

   public function add()
   {
      if(request()->isPost()){
        $data=input('post.');
        //dump($data);die;
        //验证规则
        $validate = validate('Cate');//助手函数
            if(!$validate->scene('add')->check($data)){
                $this->error($validate->getError());
          } 

        $add=db('cate')->insert($data);
        if($add){
          $this->success('添加栏目成功！',url('cate/lst'));
        }else{
          $this->error('添加栏目失败！');
        }
        return;
      }
      //添加子栏目的ID
      $cateid=input('cateid');
   //模型信息
      $modelres=db('model')->field('id,model_name')->select();
      //dump($cateModelid);die;
      $cate= new CateModel();
      $cateres=$cate->cateTree();
      //dump($cateres);die;
      $this->assign(array(
          'cateres'=>$cateres,
          'cateid'=>$cateid,
          'modelres'=>$modelres,
        ));
   		return view();
   }

   public function upload()
   {

            // 获取表单上传文件
            $files = request()->file('img');
          // 移动到框架应用根目录/public/uploads/ 目录下
            $info= $files->validate(['size'=>2097152,'ext'=>'jpg,png,gif'])->move(ROOT_PATH . 'public/static/admin/uploads/cateimg'); 
            if($info){ 
            	 return  $imageSrc=$info->getSaveName();
            }else{
                // 上传失败获取错误信息
              return  $this->error($file->getError());
            }    
                   
   }
   //编辑栏目
   public function edit($cateid)
   {
      if(request()->isPost()){
        $data=input('post.');
        if(!isset($data['status'])){
          $data['status']=1;//局限性不确定有几个按钮类型
        }
       // dump($data);die;
        //父级栏目选取子栏目作为父级，进行判断
        $trees=model('cate')->editTree($data['pid']);
        $flag=true;
                foreach ($trees as $v) {
                    if($v['id']==input('id')){
                        $flag=false;
                        break;
                    }
                }
                if(!$flag){
                    // echo $cat_id,'是',$data['parent_id'],'的祖先';
                    $this->error('上级栏目选取失败！');
                    exit;

                }
          //验证数据类型
          $validate = validate('Cate');//助手函数
            if(!$validate->scene('edit')->check($data)){
                $this->error($validate->getError());
          } 
            $save=db('cate')->where('id',$data['id'])->update($data);
             if($save !==false){
                $this->success('栏目修改成功！',url('cate/lst'));
             }else{
                $this->error('栏目修改失败！');
             } 
        return;
      }
    $data=db('cate')->find($cateid);
    //模型信息
    $modelres=db('model')->field('id,model_name')->select();
    //dump($data);die;
    $cateres=model('cate')->cateTree();
      $this->assign(array(
          'cateres'=>$cateres,
          'data'=>$data,
          'modelres'=>$modelres,
        ));
   		return view();
   }

   public function del($cateid)
   {
     
      $catechildrenid=model('cate')->cateChildrenId($cateid);
      //dump( $catechildrenid);die;
      $catechildrenid[]=(int)$cateid;//当前栏目id
      sort($catechildrenid);
      $del=db('cate')->delete($catechildrenid);
      if($del){
          $this->success('删除栏目成功！',url('cate/lst'));
        }else{
          $this->error('删除栏目失败！');
        }
   }

 public function delimg(){

        $imgurl=input('imgurl');//ADMINIMG
        //接受cateid 进行删除数据表中的图片路径
        $cateid=input('cateid');
        if($cateid){
          db('cate')->where('id',$cateid)->setField('img','');
        }
        
        $imgurls=ADMINIMG.$imgurl;        
        $res=unlink($imgurls);//使用UNlink要使用相对路径进行删除图片，绝对路径有错误
           if($res){
             $data=[
                      'status'=>0,
                      'msg'=>'撤销成功！',
                  ];
              }else{
                  $data=[
                      'status'=>1,
                      'msg'=>'撤销失败！',
                  ];
              }
        return $data;
    }
     
    //ajax修改添加子栏目功能、选定当前上级栏目，模型和模板也要相应改变
    public function ajaxchangtmp(){
         $pcateid=input('cateid');
         $data= db('cate')->find($pcateid);
         echo json_encode($data);
    }
}
